package com.xiejr.controller;

import com.xiejr.api.dto.order.CourierDTO;
import com.xiejr.converter.CourierConverter;
import com.xiejr.entity.Courier;
import com.xiejr.service.CourierService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * 快递员表(Courier)表控制层
 *
 * @author mobai
 * @since 2021-02-14 21:23:50
 */
@RestController
@RequestMapping("courier")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@Slf4j
@Api(value = "快递员表 控制器", tags = {"快递员表 接口"})
public class CourierController {
    /**
     * 快递员表 服务对象
     */
    private final CourierService courierService;


    /**
     * 快递员表 领域对象转换器
     */
    private final CourierConverter courierConvertor;


    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("/{id}")
    @ApiOperation("根据ID获取单条数据")
    public Courier selectOne(@PathVariable Integer id) {
        return this.courierService.getById(id);
    }


    /**
     * 获取所有
     *
     * @return 所有数据
     */
    @ApiOperation("获取所有")
    @GetMapping("/all")
    public List<Courier> all() {
        return this.courierService.list();
    }


    /**
     * 插入单条数据
     *
     * @param param 待插入数据
     * @return void
     */
    @ApiOperation("插入数据")
    @PostMapping("")
    public void insert(@RequestBody @Valid CourierDTO param) {
        Courier entity = this.courierConvertor.dtoToEntity(param);
        this.courierService.save(entity);
    }


    /**
     * 根据id删除数据
     *
     * @param id 主键
     * @return void
     */
    @ApiOperation("根据ID删除数据")
    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable Integer id) {
        this.courierService.removeById(id);
    }


}